perm filename FREE.DIF[EAL,HE] blob
sn#701189 filedate 1983-03-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00004 00002 DONE
C00009 00003 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 2,2
C00013 00004 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 2,2
C00016 00005 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 4,4
C00019 00006 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 6,6
C00022 00007 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 6,6
C00026 00008 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 10,10
C00029 00009 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 11,11
C00032 00010 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 12,12
C00035 00011 1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 12,12
C00036 ENDMK
C⊗;
DONE
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 1,1
**** File 1) FREE.PAS[AL,HE]/1P/9L
1) C00027 00007 (* records for parser: ident, token, resword *)
1) C00030 00008 (* process descriptor blocks & environment record definitions *)
1) C00033 00009 (* definition of AL-ARM messages *)
1) C00035 00010 (* aux routines from elsewhere *)
1) C00036 00011 (* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
1) C00042 00012 (* routine to free up a program once we're done with it: freeStatement *)
1) C00047 ENDMK
1) C⊗;
**** File 2) U:FREE.PAS[AL2,RV]/1P/9L
2) C00026 00007 (* records for parser: ident, token, resword *)
2) C00029 00008 (* process descriptor blocks & environment record definitions *)
2) C00032 00009 (* definition of AL-ARM messages *)
2) C00034 00010 (* aux routines from elsewhere *)
2) C00035 00011 (* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
2) C00040 00012 (* routine to free up a program once we're done with it: freeStatement *)
2) C00045 ENDMK
2) C⊗;
***************
**** File 1) FREE.PAS[AL,HE]/2P/10L
1) YARMDEV = (*1B*) 1; (* device bits for: yellow arm *)
1) YHANDDEV = (*2B*) 2;
1) BARMDEV = (*4B*) 4;
1) BHANDDEV = (*10B*) 8;
1) VISEDEV = (*20B*) 16;
1) DRIVERDEV = (*40B*) 32;
1) GARMDEV = (*100B*) 64;
1) GHANDDEV = (*200B*) 128;
1) RARMDEV = (*400B*) 256;
1) RHANDDEV = (*1000B*) 512;
1) YELARM = 1; (* Yellow arm *)
1) BLUARM = 4; (* Blue arm *)
1) FTABLE = (*400B*) 256; (* Force trans (C) in table coordinates *)
1) FHAND = 0; (* " " " " hand coordinate system *)
1) XFORCE = 0; (* Force along X direction of C *)
1) YFORCE = (*1000B*) 512; (* " " Y " " " *)
1) ZFORCE = (*2000B*) 1024; (* " " Z " " " *)
1) XMOMENT = (*3000B*)1536; (* Moment about X direction of C *)
1) YMOMENT = (*4000B*)2048; (* " " Y " " " *)
1) ZMOMENT = (*5000B*)2560; (* " " Z " " " *)
1) FSTOP = (*10000B*)4096; (* In addition to starting cmon, stop arm *)
1) SIGMAG = (*20000B*)8192; (* Test only magnitude of forces *)
1) SIGGE = (*100000B*) 32768; (* Start cmon if force ≥ specified value *)
1) SIGLT = 0; (* " " " " < " " *)
1) BARMPOWER = 1; (* bit defs - used in response to initarmscmd *)
1) YARMPOWER = 2;
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 2,2
1) GARMPOWER = 4;
1) RARMPOWER = (*10B*) 8;
1) GARMCAL = (*400B*) 256;
1) RARMCAL = (*1000B*) 512;
1) NULLINGCB = 1; (* control bits for trajectory specs *)
1) WOBBLECB = 2;
1) DURLBCB = (*20B*) 16; (* Duration: lower, upper & exact bounds *)
1) DURUBCB = (*40B*) 32;
1) DUREQCB = (*60B*) 48;
1) VELOCCB = (*100B*) 64;
1) CODECB = (*200B*) 128;
1) VIAPTCB = (*400B*) 256;
1) DEPRPTCB = (*1000B*) 512;
1) APPRPTCB = (*2000B*) 1024;
1) DESTPTCB = (*10000B*) 4096;
1) CR = 13; (* Carriage return *)
1) LF = 10; (* Line feed *)
1) (* random type declarations for OMSI/SAIL compatibility *)
**** File 2) U:FREE.PAS[AL2,RV]/2P/10L
2) YARMDEV = 1B; (* device bits for: yellow arm *)
2) YHANDDEV = 2B;
2) BARMDEV = 4B;
2) BHANDDEV = 10B;
2) VISEDEV = 20B;
2) DRIVERDEV = 40B;
2) GARMDEV = 100B;
2) GHANDDEV = 200B;
2) RARMDEV = 400B;
2) RHANDDEV = 1000B;
2) YELARM = 1B; (* Yellow arm *)
2) BLUARM = 4B; (* Blue arm *)
2) FTABLE = 400B; (* Force trans (C) in table coordinates *)
2) FHAND = 0B; (* " " " " hand coordinate system *)
2) XFORCE = 0B; (* Force along X direction of C *)
2) YFORCE = 1000B; (* " " Y " " " *)
2) ZFORCE = 2000B; (* " " Z " " " *)
2) XMOMENT = 3000B; (* Moment about X direction of C *)
2) YMOMENT = 4000B; (* " " Y " " " *)
2) ZMOMENT = 5000B; (* " " Z " " " *)
2) FSTOP = 10000B; (* In addition to starting cmon, stop arm *)
2) SIGMAG = 20000B; (* Test only magnitude of forces *)
2) SIGGE = 100000B; (* Start cmon if force ≥ specified value *)
2) SIGLT = 0B; (* " " " " < " " *)
2) barmpower = 1B; (* bit defs - used in response to initarmscmd *)
2) yarmpower = 2B;
2) garmpower = 4B;
2) rarmpower = 10B;
2) garmcal = 400B;
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 2,2
2) rarmcal = 1000B;
2) NULLINGCB = 1B; (* control bits for trajectory specs *)
2) WOBBLECB = 2B;
2) (* Duration: 20B, 40B, 60B for lower, upper & exact bounds *)
2) VELOCCB = 100B;
2) CODECB = 200B;
2) VIAPTCB = 400B;
2) DEPRPTCB = 1000B;
2) APPRPTCB = 2000B;
2) DESTPTCB = 10000B;
2) (* random type declarations for OMSI/SAIL compatibility *)
***************
**** File 1) FREE.PAS[AL,HE]/4P/9L
1) movetype,jtmovetype,operatetype,opentype,closetype,centertype,
1) floattype, stoptype, retrytype,
1) requiretype, definetype, macrotype, commenttype, dimdeftype,
1) setbasetype, wristtype, saytype, declaretype, emptytype,
1) evaltype, armmagictype);
1) (* more??? *)
1) statement = packed record
1) next, last: statementp;
1) stlab: varidefp;
**** File 2) U:FREE.PAS[AL2,RV]/4P/9L
2) movetype, operatetype, opentype, closetype, centertype,
2) stoptype, retrytype,
2) requiretype, definetype, macrotype, commenttype, dimdeftype,
2) setbasetype, wristtype, tovaltype, declaretype, emptytype);
2) (* more??? *)
2) statement = packed record
2) next, last: statementp; (* ↑ to lexical tokens? *)
2) stlab: varidefp;
***************
**** File 1) FREE.PAS[AL,HE]/4P/21L
1) bpt,bad: boolean;
1) case stype: stmntypes of
**** File 2) U:FREE.PAS[AL2,RV]/4P/20L
2) bpt: boolean;
2) case stype: stmntypes of
***************
**** File 1) FREE.PAS[AL,HE]/4P/39L
1) aborttype,
1) saytype: (plist: nodep; debugLev: integer);
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 4,4
1) returntype: (retval, rproc: nodep);
1) evaltype,
1) calltype,
**** File 2) U:FREE.PAS[AL2,RV]/4P/38L
2) aborttype: (plist: nodep);
2) returntype: (retval, rproc: nodep);
2) calltype,
***************
**** File 1) FREE.PAS[AL,HE]/4P/50L
1) jtmovetype,
1) operatetype,
**** File 2) U:FREE.PAS[AL2,RV]/4P/47L
2) operatetype,
***************
**** File 1) FREE.PAS[AL,HE]/4P/55L
1) floattype,
1) setbasetype,
1) stoptype: (cf, clauses: nodep);
1) retrytype: (rcode, rparent: statementp; olevel: integer);
1) wristtype: (arm, ff, fvec, tvec: nodep; csys: boolean);
1) cmtype: (oncond: nodep; conclusion: statementp;
**** File 2) U:FREE.PAS[AL2,RV]/4P/51L
2) stoptype: (cf, clauses: nodep);
2) retrytype: (rcode, rparent: statementp; olevel: integer);
2) cmtype: (oncond: nodep; conclusion: statementp;
***************
**** File 1) FREE.PAS[AL,HE]/4P/68L
1) armmagictype: (cmdnum,dev,iargs,oargs: nodep);
1) end;
**** File 2) U:FREE.PAS[AL2,RV]/4P/61L
2) setbasetype,
2) wristtype: (fvec, tvec: nodep);
2) tovaltype: (vstr: strngp; vlen: integer; waitp: boolean);
2) end;
***************
**** File 1) FREE.PAS[AL,HE]/6P/4L
1) deprnode, viaptnode, apprnode, destnode, byptnode, durnode,
1) sfacnode, wobblenode, swtnode, nullingnode, wristnode, cwnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/4L
2) deprnode, viaptnode, apprnode, destnode, durnode,
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 6,6
2) sfacnode, wobblenode, swtnode, nullingnode, wristnode, cwnode,
***************
**** File 1) FREE.PAS[AL,HE]/6P/9L
1) waitlistnode, procdefnode, tlistnode, dimnode, commentnode,
1) linearnode, elbownode, shouldernode, flipnode, wrtnode,
1) loadnode,velocitynode);
1) exprtypes = ( svalop, (* scalar operators *)
**** File 2) U:FREE.PAS[AL2,RV]/6P/9L
2) waitlistnode, procdefnode, tlistnode, dimnode, commentnode);
2) exprtypes = ( svalop, (* scalar operators *)
***************
**** File 1) FREE.PAS[AL,HE]/6P/31L
1) arefop, callop, grinchop, macroop, vmop, adcop, dacop, jointop,
1) badop,
**** File 2) U:FREE.PAS[AL2,RV]/6P/29L
2) arefop, callop, grinchop, macroop, vmop, adcop, dacop,
2) badop,
***************
**** File 1) FREE.PAS[AL,HE]/6P/43L
1) exprnode: (op: exprtypes; arg1, arg2, arg3: nodep; elength: integer);
1) leafnode: (case ltype: leaftypes of
1) varitype: (vari: varidefp; vid: identp);
1) pconstype: (cname: varidefp; pcval: nodep);
**** File 2) U:FREE.PAS[AL2,RV]/6P/41L
2) exprnode: (op: exprtypes; arg1, arg2, arg3: nodep; elen: integer);
2) leafnode: (case ltype: leaftypes of
2) varitype: (vari: varidefp);
2) pconstype: (cname: varidefp; pcval: nodep);
***************
**** File 1) FREE.PAS[AL,HE]/6P/56L
1) wrtnode,
1) deprnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/54L
2) departingnode,
2) deprnode,
***************
**** File 1) FREE.PAS[AL,HE]/6P/60L
1) byptnode,
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 6,6
1) viaptnode: (vlist: boolean; via,vclauses: nodep; vcode: statementp);
1) durnode: (durrel: reltypes; durval: nodep);
1) velocitynode,
1) sfacnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/58L
2) viaptnode: (vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
2) durnode: (durrel: reltypes; durval: nodep);
2) sfacnode,
***************
**** File 1) FREE.PAS[AL,HE]/6P/67L
1) nullingnode, (* true = nonulling *)
1) wristnode, (* = don't zero force wrist *)
1) cwnode, (* = counter_clockwise *)
1) elbownode, (* = elbow up *)
1) shouldernode, (* = right shoulder *)
1) flipnode, (* = don't flip wrist *)
1) linearnode: (notp: boolean); (* = linear motion *)
1) ffnode: (ff,cf: nodep; csys, pdef: boolean); (* true = world, false = hand *)
1) loadnode: (loadval,loadvec: nodep; lcsys: boolean); (* lcsys = csys above *)
1) forcenode: (ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
1) stiffnode: (fv, mv, cocff: nodep);
1) gathernode: (gbits: integer);
**** File 2) U:FREE.PAS[AL2,RV]/6P/63L
2) nullingnode,
2) wristnode,
2) cwnode: (notp: boolean); (* true = nonulling/zero wrist/counter_clockwise *)
2) ffnode: (ff: nodep; csys, pdef: boolean); (* true = world, false = hand *)
2) forcenode: (ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
2) stiffnode: (fv, mv, coc: nodep);
2) gathernode: (gbits: integer);
***************
**** File 1) FREE.PAS[AL,HE]/6P/85L
1) bndvalnode: (lb, ub, mult: integer);
1) waitlistnode: (who: pdbp; when: integer);
1) procdefnode:(ptype: datatypes; level: 0..255;
1) pname, paramlist: varidefp; body: statementp);
**** File 2) U:FREE.PAS[AL2,RV]/6P/76L
2) bndvalnode: (l, u, mult: integer);
2) waitlistnode: (who: pdbp; when: integer);
2) procdefnode:(ptype: datatypes; lex: 0..255;
2) pname, paramlist: varidefp; body: statementp);
***************
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 10,10
**** File 1) FREE.PAS[AL,HE]/10P/13L
1) procedure clrBpt(st: statementp); extern; (* from EDIT.PAS *)
1) procedure flushVar(oldvar: varidefp); extern;
1) (* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
**** File 2) U:FREE.PAS[AL2,RV]/10P/13L
2) procedure clrBpt(st: statementp); extern; (* from DEBUG.PAS *)
2) (* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
***************
**** File 1) FREE.PAS[AL,HE]/11P/43L
1) others: begin end; (* nothing to do *)
1) end;
**** File 2) U:FREE.PAS[AL2,RV]/11P/43L
2) end;
***************
**** File 1) FREE.PAS[AL,HE]/11P/69L
1) strngtype: if (length <> 2) or (str↑.ch[1] <> chr(CR)) or
1) (str↑.ch[2] <> chr(LF)) then freStrng(str) else b := false;
1) end;
**** File 2) U:FREE.PAS[AL2,RV]/11P/68L
2) strngtype: if (length <> 2) or (str↑.ch[1] <> chr(15B)) or
2) (str↑.ch[2] <> chr(12B)) then freStrng(str) else b := false;
2) end;
***************
**** File 1) FREE.PAS[AL,HE]/11P/91L
1) byptnode,
1) viaptnode:begin
1) freeNode(via);
1) freeNode(vclauses);
1) freeStatement(vcode);
**** File 2) U:FREE.PAS[AL2,RV]/11P/90L
2) viaptnode:begin
2) freeNode(via);
2) freeNode(duration);
2) freeNode(velocity);
2) freeStatement(vcode);
***************
**** File 1) FREE.PAS[AL,HE]/11P/102L
1) wrtnode,
1) velocitynode,
1) sfacnode,
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 11,11
**** File 2) U:FREE.PAS[AL2,RV]/11P/101L
2) sfacnode,
***************
**** File 1) FREE.PAS[AL,HE]/11P/113L
1) elbownode,
1) shouldernode,
1) flipnode,
1) linearnode,
1) cwnode: freeNode(next);
**** File 2) U:FREE.PAS[AL2,RV]/11P/110L
2) cwnode: freeNode(next);
***************
**** File 1) FREE.PAS[AL,HE]/11P/129L
1) loadnode: begin
1) freeNode(loadval);
1) freeNode(loadvec);
1) freeNode(next);
1) end;
1) stiffnode:begin
**** File 2) U:FREE.PAS[AL2,RV]/11P/122L
2) stiffnode:begin
***************
**** File 1) FREE.PAS[AL,HE]/11P/137L
1) freeNode(cocff);
1) freeNode(next);
**** File 2) U:FREE.PAS[AL2,RV]/11P/125L
2) freeNode(coc);
2) freeNode(next);
***************
**** File 1) FREE.PAS[AL,HE]/12P/23L
1) st := bcode;
**** File 2) U:FREE.PAS[AL2,RV]/12P/23L
2) freeVaridef(variables);
2) st := bcode;
***************
**** File 1) FREE.PAS[AL,HE]/12P/30L
1) freeVaridef(variables);
1) end;
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 12,12
**** File 2) U:FREE.PAS[AL2,RV]/12P/31L
2) end;
***************
**** File 1) FREE.PAS[AL,HE]/12P/78L
1) aborttype,
1) saytype: freeNode(plist);
1) returntype: freeNode(retval);
**** File 2) U:FREE.PAS[AL2,RV]/12P/78L
2) aborttype: freeNode(plist);
2) returntype: freeNode(retval);
***************
**** File 1) FREE.PAS[AL,HE]/12P/99L
1) jtmovetype,
1) operatetype,
**** File 2) U:FREE.PAS[AL2,RV]/12P/98L
2) operatetype,
***************
**** File 1) FREE.PAS[AL,HE]/12P/107L
1) setbasetype,
1) stoptype: freeNode(cf);
1) cmtype: begin
1) if (not exprCm) and (oncond↑.ntype = leafnode) then
1) if oncond↑.vari↑.name = nil then flushVar(oncond↑.vari);
1) flushVar(cdef);
1) freeNode(oncond);
**** File 2) U:FREE.PAS[AL2,RV]/12P/105L
2) stoptype: freeNode(cf);
2) cmtype: begin
2) freeNode(oncond);
***************
**** File 1) FREE.PAS[AL,HE]/12P/128L
1) freeNode(arm);
1) freeNode(ff);
1) freeNode(fvec);
**** File 2) U:FREE.PAS[AL2,RV]/12P/122L
2) freeNode(fvec);
***************
**** File 1) FREE.PAS[AL,HE]/12P/133L
1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV] 3-17-83 15:35 pages 12,12
1) armmagictype: begin
1) freeNode(cmdnum);
1) freeNode(dev);
1) freeNode(iargs);
1) freeNode(oargs);
1) end;
1) end;
**** File 2) U:FREE.PAS[AL2,RV]/12P/125L
2) end;
***************